Curriculum

Externship Program - AWS DevOps Engineer

Module-1: Introduction to DevOps
  • What is DevOps?
  • Roles and Responsibilities of a DevOps Engineer
  • How DevOps fits in the whole Software Development lifecycle
  • DevOps tools

Module 2: Version Control with Git
2.1 Introduction to Version Control and Git
  • Basic Concepts of Git
  • Setup git repository (remote and local)
  • Working with Git (git status, git commit, git add, git push)
  • Initialize Git project locally
  • Concept of Branches
  • Merge Requests
  • Deleting Branches
  • Avoiding Merge Commits 
  • Resolving Merge Conflicts
  • Don't track certain files (.gitignore)
  • Save work-in-progress changes (git stash)
  • Going back in history (git checkout)
  • Undoing commits (git revert, git reset)
  • Merging Branches
  • Git for DevOps

Module 3: Containers with Docker
3.1  Containers with Docker 
  • What is a Container?
  • Docker Components and architecture explained
  • Docker vs. Virtual Machine
  • Main Docker Commands
  • Debugging a Docker Container
  • Demo Project Overview - Docker in Practice (Nodejs App with MongoDB and Mongo Express UI)
  • Developing with Containers
  • Docker Compose - Running multiple services
  • Dockerfile - Building our own Docker Image
  • Private Docker Repository - Pushing our built Docker Image into a private Registry on AWS
  • Deploy containerized app
  • Docker Volumes - Persist data in Docker
  • Volumes Demo - Configure persistence for our demo project

Module 4: Build Automation - CI/CD with Jenkins
4.1 Jenkins
  • What is Build Automation? What is Jenkins?
  • Install Jenkins on cloud server (Docker vs Server install)
  • Jenkins plugins
  • Installing build tools in Jenkins
  • Jenkins Basics Demo
  • Create Freestyle Job
  • Configure Git Repository
  • Run Tests and Build Java Application
  • Docker in Jenkins
  • Make Docker commands available in Jenkins
  • Build Docker Image
  • Push to DockerHub Repo
  • Jenkins Pipeline (Use Cases)
  • Create a simple Pipeline Job
  • Full Jenkins file Syntax Demo
  • Create a full Pipeline Job
  • Build Java App
  • Build Docker Image
  • Push to private DockerHub
  • Create a Multi-Branch Pipeline Job
  • Credentials in Jenkins
  • Jenkins Shared Library
  • WebHooks - Trigger Jenkins Jobs automatically
  • Versioning Application in Continuous Deployment
  • Concepts of Versioning in Software Development
  • Increment Application version from Jenkins Pipeline
  • Set new Docker Image version from Jenkins Pipeline
  • Commit Version Bump from Jenkins Pipeline

Module 5: AWS Services
5.1 Services
  • Introduction to Amazon Web Services
  • Identity & Access Management (IAM) - User, Groups and Permissions
  • Regions and Availability Zones
  • Virtual Private Cloud (VPC) - Your Private Network
  • Subnets
  • Security Groups
  • Internet Gateway
  • Route Table
  • CIDR Blocks
  • Introduction to Elastic Compute Cloud (EC2)
  • Create an EC2 Instance
  • Run Web application on EC2 using Docker
  • AWS Command Line Tool
  • Install and configure AWS CLI
  • Create EC2
  • Create Security Group
  • Create key-pair
  • Create IAM user with permissions

5.2 AWS & Jenkins - Continuous Deployment with Jenkins to AWS EC2
  • Automate deploying from Jenkins Pipeline to EC2 Instance
  1. using docker run
  2. using docker-compose
  • Real-life example of dynamically setting new image version in docker-compose
  • SSH agent plugin and SSH credential type in Jenkins

Module 6: Container Orchestration with Kubernetes
6.1 Container Orchestration with Kubernetes
  • Introduction to Kubernetes
  • Understand the main Kubernetes Components
  • Node, Pod, Service, Ingress, ConfigMap, Secret, Volume, Deployment, StatefulSet
  • Kubernetes Architecture
  • Minikube and kubectl - Local Setup
  • Main Kubectl Commands - K8s CLI
  • Create and debug Pod in a Minicluster
  • Kubernetes YAML Configuration File
  • Create and Configure Deployment and Service Component
  • Demo Project: MongoDB and MongoExpress
  • Organizing your components with K8s Namespaces
  • Kubernetes Service Types
  • Making your App accessible from outside with Kubernetes Ingress
  • Persisting Data in Kubernetes with Volumes
  • Persistent Volume
  • Persistent Volume Claim
  • Storage Class
  • ConfigMap and Secret Kubernetes Volume Types
  • Deploying Stateful Apps with StatefulSet
  • Deploying Kubernetes cluster on a Managed Kubernetes Service (K8s on Cloud)
  • Helm - Package Manager of Kubernetes
  • Helm Demo: Install a Stateful Application on Kubernetes using Helm
  • Demo: Deploy App from Private Docker Registry
  • Extending the Kubernetes API with Operator
  • Prometheus Operator Demo with Helm: Setup Prometheus Monitoring in K8s

Module 7: Kubernetes on AWS - EKS
7.1 AWS & Kubernetes 
  • AWS Container Services: Overview (ECR, ECS, EKS, Fargate)
  • Create an EKS cluster with AWS Management Console (UI)
  • Create cluster VPC
  • Create cluster Roles
  • Use Cloudformation Stack
  • EC2 Worker Nodes
  • Fargate Profile
  • Configure Austoscaler
  • Configure kube context to connect to the cluster
  • Create an EKS cluster with eksctl (the easy way)
7.2 AWS & Kubernetes & Jenkins & Docker - CI/CD
  • Configure kubectl inside Jenkins
  • Configure kube context in Jenkins
  • Install aws-iam-authenticator in Jenkins
  • Complete Jenkins Pipeline - Deploy to EKS - using kubectl
  • Complete Jenkins Pipeline - Build and push docker image to ECR and deploy to EKS
  • Complete Jenkins Pipeline - Deploy to LKE using Kubernetes CLI plugin and kubeconfig file

Module 8: Infrastructure as Code with Terraform
8.1 Terraform
  • What is Terraform? How it works
  • Architecture
  • Providers
  • Resources & Data Sources
  • Variables & Output Values
  • Environment variables in Terraform
  • Terraform commands
  • Terraform State
  • Modules
  • Remote State
Terraform & AWS
  • Create Security Group
  • Create VPC
  • Create Subnet
  • Create Route Table
  • Create Internet Gateway
  • Create key-pair
  • Provision EC2 server
  • Modularize the demo project
Terraform & AWS & Kubernetes
  • Use existing modules from Terraform Registry
  • Create VPC
  • Provision EKS cluster
Terraform & AWS & Jenkins - complete CI/CD
  • Configure Terraform in Jenkins
  • Automate provisioning EC2 instance from Jenkins pipeline and deploy the application with docker-compose

SmartInternz